package Grafica;

import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;

import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import java.net.MalformedURLException;





import javax.imageio.ImageIO;



import javax.swing.ImageIcon;

import javax.swing.JPanel;


public class PannelloConSfondo extends JPanel {
	   private Image img;
           private boolean mantieniProporzioni = false;
           private boolean daRuotare = false;
           private int posizione;
           public PannelloConSfondo(String percorsoImmagineDiSfondo,int posizione)
            {
               this(percorsoImmagineDiSfondo);
               this.posizione=posizione;
               daRuotare = true;
            }
           public PannelloConSfondo(String percorsoImmagineDiSfondo, boolean mantieniProporzioni)
            {
               this(percorsoImmagineDiSfondo);
               this.mantieniProporzioni = mantieniProporzioni;
            }
	   public PannelloConSfondo(String percorsoImmagineDiSfondo)
	   {
               this.setDoubleBuffered(true);
               try
               {
                   this.img = ImageIO.read(new File(percorsoImmagineDiSfondo));
               }
               catch (MalformedURLException e) {}
               catch (IOException e) {}
           }
    @Override

    public void paintComponent(Graphics g) {
            ImageIcon icon = null;
            if (daRuotare==true)
                icon = ImageUtils.createRotatedImage(new JPanel(),  new ImageIcon(this.img), posizione);
            else
                icon = new ImageIcon(this.img);

            int iconWidth = icon.getIconWidth();
            int iconHeight = icon.getIconHeight();
            double iconAspect = (double) iconHeight / iconWidth;
            int w = getWidth();
            int h = getHeight();
            double canvasAspect = (double) h / w;
            int x = 0, y = 0;
            if (mantieniProporzioni){
                if(iconAspect < canvasAspect)
                {
                    y = h;
                    h = (int) (w * iconAspect);
                    y = (y - h) / 2; // center it along vertical
                }
                else
                {
                    x = w;
                    w = (int) (h / iconAspect);
                    x = (x - w) / 2; // center it along horizontal
                }
            }
            else{
                if(iconAspect < canvasAspect)
                    y=0;
                else
                    x=0;
            }
            Image immagine = icon.getImage();
            g.drawImage(immagine, x, y, w + x, h + y, 0, 0, iconWidth, iconHeight, null);
    }
}

